package design_1_factory.demo2.factory;

import design_1_factory.demo2.server.impl.AServiceImpl;
import design_1_factory.demo2.server.impl.BServiceImpl;
import design_1_factory.demo2.server.impl.CServiceImpl;

import java.util.concurrent.ConcurrentHashMap;

/**
 * 创建一个工厂，根据不同的参数，获取到对应的实现类
 *
 * @author wangsong
 * @email 1720696548@qq.com
 * @date 2022/1/18 11:35
 */
public class BendFactory {

	/**
	 * bend 容器
	 */
	private static ConcurrentHashMap<String, Object> bendMap = null;

	/**
	 * 使用 getShape 方法获取形状类型的对象
	 *
	 * @author wangsong
	 * @email 1720696548@qq.com
	 * @date 2022/1/18 11:42
	 */
	public Object getBean(String className) {
		if (bendMap == null) {
			bendMap = new ConcurrentHashMap();
			initBend();
		}
		return bendMap.get(className);
	}


	/**
	 * 初始化 bend （spring 是通过注解扫描获取的，我们直接new）
	 * <p>
	 * 注册
	 * </P>
	 */
	public void initBend() {
		bendMap.put(AServiceImpl.class.getSimpleName(), new AServiceImpl());
		bendMap.put(BServiceImpl.class.getSimpleName(), new BServiceImpl());
		bendMap.put(CServiceImpl.class.getSimpleName(), new CServiceImpl());
	}
}